/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cinema.controler;

import cinema.model.Cinema;
import cinema.model.myThread;
import cinema.model.Arquivo;
import cinema.model.Sala;
import cinema.model.Sessão;
import cinema.view.CinemaView;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author AlisonSM
 */
public class CinemaControler {
    private CinemaView view;
    private Cinema model;
    private javax.swing.JTable table;
    private myThread thread;
    private javax.swing.JLabel label;
    private Arquivo arquivo;
    
    public CinemaControler(CinemaView view, Cinema model, javax.swing.JTable table, javax.swing.JLabel label){
        this.view = view;
        this.model = model;
        this.table = table;
        this.label = label;
        this.arquivo = new Arquivo();
    }
    
    public void cadastrarSala (){
        int lotaçãoMáxima = view.getValoresSala();
        int numsala = (model.getNumdeSalas());
        model.addSala(lotaçãoMáxima);
        view.setValoresSala(null, Integer.toString (numsala+2));
        view.setValoresSessão(numsala+1);
        view.SetEneabledBotõesSessão(true);
    }
    
    public void cadastrarSessão (){
        ArrayList<String> valores = view.getValoresSessão();
        String nomeFilme = valores.get(0);
        String data = valores.get(1);
        String horario = valores.get(2);
        int numsala = Integer.parseInt (valores.get(3));
        model.addSessão(nomeFilme, data, horario, numsala);
        view.setValoresSessão(0);
          
        DefaultTableModel tabela = (DefaultTableModel) table.getModel();
        tabela.setRowCount(tabela.getRowCount()+1);
        int nLinhas = table.getRowCount()-1;
        table.setValueAt(nomeFilme, nLinhas, 0);
        table.setValueAt(data, nLinhas, 1);
        table.setValueAt(horario, nLinhas, 2);
        table.setValueAt(numsala+1, nLinhas, 3);
        view.SetEneabledBotõesVenda(true);
    }
    
    public void vendeIngresso(int index){
        if(model.getIngressosDisponoveis(index)>0){
            model.vendeIngresso(index);
            atualizaingressos(index);
        }
    }
    
    public void atualizaingressos(int index){
        int ingressosVendidos = model.getIngressosVendidos(index);
        int ingressosDisponiveis = model.getIngressosDisponoveis(index);
        view.setValoresIngresso(Integer.toString (ingressosVendidos),Integer.toString(ingressosDisponiveis));
        if(model.getIngressosDisponoveis(index)==0){
            view.SetEneabledBotõesVenda(false);
            view.setAvisoEsgotado();
        }
        else{
            view.SetEneabledBotõesVenda(true);
        }
    }
    
        public void runThread() {
        thread= new myThread(label);
        thread.start();
    }
        
        public void SalvaremArquivo(){
            ArrayList<Sessão> sessões = model.getSessões();
            ArrayList<Sala> sala = model.getSalas();
            arquivo.Salvar(sessões, sala);
        }
}
